package com.yang.design.structure.decorator;

/**
 * 抽象装饰类-装饰者模式的核心
 * 作用:也是抽象构件类的子类,用于给具体构件增加职责,但是具体职责在其子类中实现
 */
public class Decorator extends Component {


    //维护了一个指向抽象构件对象的引用,通过该引用可以调用装饰之前构件对象的方法,
    //并通过其子类扩展该方法,以达到装饰的目的
    private Component component;

    //通过构造方法,注入一个抽象构件类型的对象
    public Decorator(Component component) {
        this.component = component;
    }

    @Override
    public void operation() {
        //调用原有业务方法(这里并没有真正实施装饰,而是提供了一个统一的接口,将装饰过程交给子类完成)
        component.operation();
    }
}
